package flst.ipiweb.persistance.dao;

import java.util.List;
import flst.ipiweb.transverse.Article;
import flst.ipiweb.transverse.IPIException;

public interface IArticleDao {
	
	/**
	 * Cette méthode permet de créer un article en base
	 * @param article : l'article à créer
	 */
	public void createArticle(Article article) throws IPIException;
	
	/**
	 * Cette méthode permet de mettre à jour un article en base
	 * @param article : l'article à mettre à jour
	 */
	public void updateArticle(Article article) throws IPIException;
	
	/**
	 * Cette méthode permet de supprimer un article en base
	 * @param article : l'article à supprimer
	 */
	public void deleteArticle(Article article) throws IPIException;
	
	/**
	 * Cette méthode permet de récupérer la liste des articles en base
	 * @return List<Article> : la liste des articles
	 */
	public List<Article> listerArticles() throws IPIException;
	
	/**
	 * Cette méthode permet de récupérer en base la liste des articles 
	 * ayant la référence article ref passée en paramètre 
	 * @param ref : la référence article permettant de filtrer la liste d'articles
	 * @return List<Article> : la liste des articles filtrées par référence article
	 */
	public List<Article> RechercheArticleByRef(int ref) throws IPIException;
	
	/**
	 * Cette méthode permet de récupérer en base la liste des articles 
	 * ayant le même prix 'price' passée en paramètre 
	 * @param price : le prix des articles recherchés
	 * @return List<Article> : la liste des articles filtrées par prix
	 */
	public List<Article> RechercheArticleByPrice(Double price) throws IPIException;
	
	/**
	 * Cette méthode permet de récupérer en base la liste des articles 
	 * ayant la description courte 'description' passée en paramètre 
	 * @param description : la description courte permettant de filtrer la liste d'articles
	 * @return List<Article> : la liste des articles filtrées par description courte
	 */
	public List<Article> RechercheArticleByDescription(String description) throws IPIException;
	
	/**
	 * Cette méthode permet de générer une nouvelle référence article
	 * @return int : la référence article générée
	 */
	public int GenererRefArticle();
	
	/**
	 * Cette méthode permet de récupérer un article par son id
	 * @param id
	 * @return l'article trouvé
	 */
	public Article getArticleById(int id) throws IPIException;


}
